A computer network, often referred to simply as a network, is a group of interconnected computing devices that facilitates communication among users and allows users to share resources, for example, storage space at storage devices using a storage area network (SAN). Adapters, switches, and routers (jointly referred to as network devices) may be used to interconnect computing systems, storage devices and others.
Initiators are used to send input/output (I/O) requests for storing or reading data at storage devices that are managed by a computing system, typically referred to as a target controller. An initiator may be an adapter coupled to a computing system that sends out I/O requests for reading or writing data. A target may be an adapter coupled to the target controller that provides a response to the I/O request. Various transport protocols, for example, Fibre Channel, Fibre Channel over Ethernet, iSCSI (Internet over Small Computer System Interface) and others may be used for sending I/O requests. For processing I/O requests, information is typically sent and received by network devices as frames or packets, depending on the protocol used.
In conventional systems, same data may be sent by at least two ports of a network device. To send the same data, a computing system sends two separate commands that are processed twice by the network device. The network device also obtains the same data from the computing system twice using at least two different direct memory access (DMA) operations. This is inefficient and undesirable. The same inefficiency occurs when the port is sending the same data to two different destinations, for example, two servers communicating with the same port. Continuous efforts are being made to efficiently process I/O requests at network devices.